﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using zeus.Core;
using zeus.Core.RepositoryInterfaces;
using SharpArch.Data.NHibernate;
using NHibernate;
using NHibernate.Transform;
using NHibernate.Criterion;

namespace zeus.Data.NHibernateMaps
{
    public class EventoRepository : Repository<Evento>, IEventoRepository
    {
        public IList<Evento> GetSeleccionadosByUnidad(Unidad unidad)
        {
            return Session.CreateSQLQuery("select * from evento where exists (select 1 from unidad_evento where und_id = :und_id and evento.eve_id = unidad_evento.eve_id)")
                    .AddEntity(typeof(Evento))
                    .SetInt32("und_id", unidad.Id)
                    .List<Evento>();
        }

        public IList<Evento> GetDisponiblesByUnidad(Unidad unidad)
        {
            return Session.CreateSQLQuery("select * from evento where not exists (select 1 from unidad_evento where und_id = :und_id and evento.eve_id = unidad_evento.eve_id)")
                    .AddEntity(typeof(Evento))
                    .SetInt32("und_id", unidad.Id)
                    .List<Evento>();
        }

        public IList<Evento> GetNombreEventos()
        {
            return Session.CreateQuery("from Evento e where e.Tipo = 2 and e.Id != 1")
               .SetFirstResult(0)
               .SetMaxResults(4)
               .List<Evento>();
        }


    }
}
